%%
x=[1 2 3 4 5];
y1=cirshift(x,3,5);
y2=cirshift(x,-3,6);
figure;
subplot(131);stem(0:length(x)-1, x, '.');
subplot(132);stem(0:length(y1)-1, y1, '.');
subplot(133);stem(0:length(y2)-1, y2, '.');

%%
x=[2,3,4,5,6];N=8;
x=[x,zeros(1,N-length(x))];nx=0:N-1;
y=x(mod(-nx,N)+1);
subplot(121),stem(0:N-1,x);title('原序列');
xlabel('n');ylabel('x(n)');grid;
subplot(122),stem(0:N-1,y);title('圆周翻褶序列');
xlabel('n');ylabel('x((n))_8 R_8(n)');grid;

%%
x=[1,2,3,4,5,6,7,8];
N=length(x);
[xep, xop]=circevod(x);
subplot(131),stem(0:N-1,x);title('原序列');
subplot(132),stem(0:N-1,xep);title('偶对称分量');
subplot(133),stem(0:N-1,xop);title('奇对称分量');

%%
x=[1,2,3,4,5,6,7,8,9]';N=length(x);
Xk_DFT=dftmtx(N)*x;
disp('使用DFT矩阵计算的结果:');
disp(Xk_DFT);
Xk_dft=dft(x, N);
disp('使用自己实现的DFT函数计算的结果:');
disp(Xk_dft);

%%
X=[1,2,3,4,5,6,7,8,9]';N=length(X);
xn_IDFT=conj(dftmtx(N))/N*X;
disp('使用IDFT矩阵计算的结果:');
disp(xn_IDFT);
xn_idft=idft(X, N);
disp('使用自己实现的IDFT函数计算的结果:');
disp(xn_idft);

%%
x1=[2 4 3 1];
x2=[2 1 3];
y=circonvt(x1,x2,4);
disp('四点圆周卷积和');
disp(y);

%%
x1=[2 4 3 1];
x2=[2 1 3];
y=circonvt(x1,x2,6);
y1=conv(x1,x2);
disp('六点圆周卷积和')
disp(y);
disp('线性卷积和');
disp(y1)

%%
x1=[2 4 3 1];
x2=[2 1 3];

% 4点圆周卷积和
y1=fd_circonvt(x1,x2,4)

% 6点圆周卷积和
y2=fd_circonvt(x1,x2,6)

% 线性卷积和
y3=fd_conv(x1,x2)

%%
n=-10:40;
s=zeros(size(n));
v=(n>=0) & (n<=29);
s(v)=n(v)+1;

s_32_dft = fft(s, 32);
s_64_dft = fft(s, 64);

% 绘制幅度谱和相位谱
figure;
subplot(221);stem(0:31, abs(s_32_dft), '.');title('32点DFT幅度谱');
subplot(222);stem(0:31, angle(s_32_dft), '.');title('32点DFT相位谱');
subplot(223);stem(0:63, abs(s_64_dft), '.');title('64点DFT幅度谱');
subplot(224);stem(0:63, angle(s_64_dft), '.');title('64点DFT相位谱');


%%
% 再利用ifft函数求上面代码结果的原时间序列
n=-10:40;
s=zeros(size(n));
v=(n>=0) & (n<=29);
s(v)=n(v)+1;
s_32_dft = fft(s, 32);
s_64_dft = fft(s, 64);

s_32_idft = ifft(s_32_dft, 32);
s_64_idft = ifft(s_64_dft, 64);
figure;
subplot(221);stem(0:31, s_32_idft, '.');title('32点IDFT');
subplot(222);stem(0:63, s_64_idft, '.');title('64点IDFT');
subplot(223);stem(n, s, '.');title('原序列');




